package br.com.medmark.bean;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;



import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import br.com.medmark.model.hibernate.AreaAtuacao;
import br.com.medmark.model.hibernate.Clinica;
import br.com.medmark.model.hibernate.Estado;
import br.com.medmark.model.hibernate.Profissao;
import br.com.medmark.model.hibernate.Profissional;
import br.com.medmark.model.hibernate.dao.UtilDAOImpl;
import br.medmark.servico.ClinicaServico;

@ManagedBean(name = "beanCadastroProfissional")
@ViewScoped
public class BeanCadastroProfissional implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6084274213412007642L;
	
	private String nome;
	private int codigoProfissao;
	private String cpf;
	private int codigoAreaAtuacao;
	private String rua;
	private String numero;
	private String complemento;
	private String bairro;
	private String cidade;
	private String estado;
	private List<Estado> estados;
	private List<Profissao> profissoes;
	
	private List<AreaAtuacao> areasAtuacao;
	private String telefone1;
	private String telefone2;
	
	@PostConstruct
	public void init(){
		
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
		
		Clinica clinica = (Clinica) session.getAttribute("clinica");
		if (clinica == null) {
			try {
				FacesContext.getCurrentInstance().getExternalContext().redirect("login/login.xhtml");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}else{

	        estados = UtilDAOImpl.getInstance().getEstados();
	       
	
	        profissoes = UtilDAOImpl.getInstance().getProfissoes();
	        
	        
	        if (codigoProfissao == 0) {
	        	buscaAreaAtuacao(profissoes.get(0).getCodigo());
			}else{
				buscaAreaAtuacao(codigoProfissao);
			}
	    
		}
	}
	
	/*public String inicia(){
		
		estados = UtilDAOImpl.getInstance().getEstados();

		profissoes = UtilDAOImpl.getInstance().getProfissoes();

		if (codigoProfissao == 0) {
			buscaAreaAtuacao(profissoes.get(0).getCodigo());
		} else {
			buscaAreaAtuacao(codigoProfissao);
		}

		return "/pages/cadastroProfissional?faces-redirect=true";
	}*/
	
	public List<AreaAtuacao> buscaAreaAtuacao(int codigoProfissao){
		
		List<AreaAtuacao> listAreaAtuacao = UtilDAOImpl.getInstance().getAreasAtuacao(codigoProfissao);
		if (areasAtuacao != null) {
			areasAtuacao.clear();	
		}else{
			areasAtuacao = new ArrayList<AreaAtuacao>();
		}
		
		for (AreaAtuacao areaAtuacao : listAreaAtuacao) {
			areasAtuacao.add(areaAtuacao);
		}
		return listAreaAtuacao;
		
		
	}
	
	public void criaProfissional() throws Exception{
		

		ClinicaServico.getInstance().criaProfissional(codigoProfissao,codigoAreaAtuacao,rua,bairro,
				complemento,numero,cidade,estado,telefone1,telefone2,cpf,nome,"N");
		
		limparDados();
	 
	}
	
	public void limparDados(){
		
			nome = null;
			codigoProfissao = 0;
			cpf = null;
			codigoAreaAtuacao = 0;
			rua = null;
			numero = null;
			complemento = null;
			bairro = null;
			cidade = null;
			estado = null;
			telefone1 = null;
			telefone2 = null;
		
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	public String getRua() {
		return rua;
	}
	public void setRua(String rua) {
		this.rua = rua;
	}
	public String getNumero() {
		return numero;
	}
	public void setNumero(String numero) {
		this.numero = numero;
	}
	public String getComplemento() {
		return complemento;
	}
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getTelefone1() {
		return telefone1;
	}

	public void setTelefone1(String telefone1) {
		this.telefone1 = telefone1;
	}

	public String getTelefone2() {
		return telefone2;
	}

	public void setTelefone2(String telefone2) {
		this.telefone2 = telefone2;
	}

	public List<Estado> getEstados() {
		return estados;
	}

	public void setEstados(List<Estado> estados) {
		this.estados = estados;
	}

	public List<Profissao> getProfissoes() {
		return profissoes;
	}

	public void setProfissoes(List<Profissao> profissoes) {
		this.profissoes = profissoes;
	}

	public List<AreaAtuacao> getAreasAtuacao() {
		return areasAtuacao;
	}

	public void setAreasAtuacao(List<AreaAtuacao> areasAtuacao) {
		this.areasAtuacao = areasAtuacao;
	}

	public int getCodigoProfissao() {
		return codigoProfissao;
	}

	public void setCodigoProfissao(int codigoProfissao) {
		this.codigoProfissao = codigoProfissao;
	}

	public int getCodigoAreaAtuacao() {
		return codigoAreaAtuacao;
	}

	public void setCodigoAreaAtuacao(int codigoAreaAtuacao) {
		this.codigoAreaAtuacao = codigoAreaAtuacao;
	}
	
	public void save() {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage("Welcome " + nome));
    }
	
	
	
	
	
	

}
